#ifndef SRC_RPC_MODULE_EPOLL_H
#define SRC_RPC_MODULE_EPOLL_H

#include "net/poller.h"

#include <sys/epoll.h>

namespace net {
class Epoll : public Poller {
  public:
    Epoll()
        : ep_fd_(-1) {
    }

    bool Init();
    void Stop();

    bool Add(Event* ev, int flag);
    void Del(Event* ev, int flag);
    bool Mod(Event* ev, int flag);

    void Loop();

  private:
    int ep_fd_;
    std::vector<epoll_event> events_;

    std::set<int> fds_;

    const static int MaxEventCnt = 1024;

    DISALLOW_COPY_AND_ASSIGN(Epoll);
};
}
#endif  // SRC_RPC_MODULE_EPOLL_H
